/*
ID: quxiao82
LANG: C++
PROG: humble
*/


#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <vector>
using namespace std ;

const int MAX = 100;

int n, k;
int p[MAX];
int pIdx[MAX];
vector<int > humble ;

void Input ()
{
       int i;
       scanf( "%d%d", &k, &n);
       for ( i = 0; i < k; i++)
             scanf( "%d", &p[i]);
}

bool check (int x )
{
       int i;
       for ( i = 0; i < k; i ++)
      {
             while ( x % p[i] == 0 )
                   x /= p[ i];
      }
       return (x == 1);
}
//
// void Solve ()
// {
//    int cnt, i, j;
//    cnt = 0;
//    for (i = 0; i < k; i ++)
//          humble.insert(p[i]);
//    i = 0;
//    while ( cnt < n )
//    {
//          ++ i;
//          if ( humble.find(i) != humble.end() )
//          {
//                cnt ++;
//                printf("%d %d\n", cnt, i);
//                for (j = 0; j < k; j ++)
//                      humble.insert(i*p[j]);
//          }
//    }
//    printf("%d\n", i);
// }

// void Solve ()
// {
//    int i, cnt;
//    i = 1;
//    cnt = 0;
//    while ( cnt < n )
//    {
//          ++ i;
//          if ( check(i) )
//          {
//                ++ cnt;
//                //printf("%d %d\n", cnt, i);
//          }
//    }
//    printf("%d\n", i);
// }

void Solve ()
{
       int i, j, minVal, minIdx, tmp;
       humble. push_back(1);
       for ( i = 0; i < k; i ++)
             pIdx[ i] = 0;
       i = 0;
       while ( i < n )
      {
             minVal = -1;
             for ( j = 0; j < k; j ++)
            {
                   tmp = humble[ pIdx[ j]] * p[ j];
                   if ( minVal == -1 || minVal > tmp )
                  {
                         minVal = tmp;
                         minIdx = j;
                  }
            }
             if ( minVal != humble[ i] )
            {
                   humble. push_back( minVal);
                   i ++;
            }
             pIdx[ minIdx] ++;
      }
//    for (i = 1; i < humble.size(); i ++)
//          printf("%d ", humble[i]);
//    printf("\n");
       printf( "%d\n", humble[n]);
}


int main ()
{
       freopen( "humble.in", "r" , stdin );
       freopen( "humble.out", "w" , stdout );

       Input();
       Solve();

       return 0;
}
